אני רוצה לערוך חיפוש במסד נתונים בעברית. באופן שיתקבלו תוצאות לאו דווקא לפי הכתיב המדויק, אלא עם תוספת או גרעון של אותיות השימוש. זאת אומרת, אם תוספות 'י' 'ו' באמצע המילה במקומות הראויים, וכן עם תוספות הראויות לפני המילה. במילים אחרות, כל המילים עם אותו השורש.
האם קיימת פונקציה מוכנה כזו? עדיף ב-php.

7 תשובות

avatar ענה OrelBeY ב 16 לפברואר 2012 #

יש כאן מדריך על ביטויים רגולריים, שזה שאתה צריך, אבל אני לא רואה שום דרך למצוא את השורש של המילה...

avatar ענה s976 ב 16 לפברואר 2012 #

זה בודאי הכלי הטכני שנדרש לביצוע, אבל אני (המשתמש 108927 זה אני) מחפש שמישהו כבר עשה תוכנה כזו.
בודאי שאפשר לעשות את זה. אתה רואה שגוגל עשו. צריך אלגוריטם המבוסס על כללי הדקדוק.

avatar ענה OrelBeY ב 16 לפברואר 2012 #

קשה לי להאמין שמישהו כתב אלגוריתם כזה לשפה העברית ושחרר את זה לכולם בחינם, וגם אם כן, זה לא יעמיס קצת יותר מדי על הקוד? D:
טוב, זו רק דעה שלי. מקווה שמישהו אחר יוכל לעזור לך יותר. ^_^

avatar ענה משתמש_112268 ב 17 לפברואר 2012 #

יש כמה אופציות שתוכל להישתמש בהם, אבל כל אחת מהם דורשת הרבה קריאה, הבנה ולמידה בצורה נפרדת.
יש שני אלגוריטמים להשוואת מחרוזות "בערך" שיכולים להתאים לך:
soundex ו double metaphone
לשניהם יש מימושים גם בתור פרוצדורות mysql וגם בתור פונקציות PHP, כשהראשון כנראה עדיף לך.
מה שבטוח, שתהליך החיפוש ייקח ההמון זמן וימיס הרבה על השרת.

avatar ענה s976 ב 19 לפברואר 2012 #

תודה רבה! אבל הבעיה היא שהפונקציות האלו מיועדות לאנגלית ולא לעברית. אבל קידמת אותי, כי כעת אני יודע איך ומה לחפש. ראיתי בינתיים שבאמת כנראה קיימים רק פתרונות מסחריים, ויש מישהו שעובד על זה בקוד פתוח, אבל נראה שעוד רחוק מהסיום.

avatar ענה intval ב 20 לפברואר 2012 #

זה הכי טוב שאני יכול להמליץ. לא ידעתי שהם לא עובדים עם עברית, אבל תוכל לנסות לממש משהו בעצמך, למרות שכאן אומרים שזה די קשה עבור עברית.
בכל אופן, אם תחליט לממש כזה בעצמך - גוגל יעזור לך יותר ממני.

עוד אופציה שיכולה לעניין אותך זה חיפוש לפי levenshtein
שהיא פחות טובה אבל תעבוד גם עם עברית.

+ תראה עם sphinx engine או lucene מציעים איזה משהו בשביל זה.
יכול להיות שאחד ממנועי החיפוש האלה דווקא מתמודד איכשהו עם הבעיה.

avatar ענה s976 ב 20 לפברואר 2012 #

תודה רבה!